#include "ControlTask.h"
#include "cmsis_os.h"
#include "gpio.h"

//如果用cpp别忘了externC

static RelayState_t Pump_Relay_state = OFF;
static RelayState_t Heat_Relay_state = OFF;
static RelayState_t Drainage_Relay_state = OFF;
static RelayState_t Backup_Relay_state = OFF;

//水泵继电器操作函数
void Relay_PUMP_Operate(RelayState_t state) {
    if (state == ON) {
        HAL_GPIO_WritePin(PUMP_GPIO_Port,PUMP_Pin, GPIO_PIN_SET); // 打开继电器
        Pump_Relay_state = ON;
    } else {
        HAL_GPIO_WritePin(PUMP_GPIO_Port,PUMP_Pin, GPIO_PIN_RESET); // 关闭继电器
        Pump_Relay_state = OFF;
    }
}

//加热继电器操作函数
void Relay_Heat_Operate(const RelayState_t state) {
    if (state == ON) {
        HAL_GPIO_WritePin(HEAT_GPIO_Port,HEAT_Pin, GPIO_PIN_SET); // 打开继电器
        Heat_Relay_state = ON;
    } else {
        HAL_GPIO_WritePin(HEAT_GPIO_Port,HEAT_Pin, GPIO_PIN_RESET); // 关闭继电器
        Heat_Relay_state = OFF;
    }
}

//排水继电器操作函数
void Relay_Drainage_Operate(RelayState_t state) {
    if (state == ON) {
        HAL_GPIO_WritePin(DRAINAGE_GPIO_Port,DRAINAGE_Pin, GPIO_PIN_SET); // 打开继电器
        Drainage_Relay_state = ON;
    } else {
        HAL_GPIO_WritePin(DRAINAGE_GPIO_Port,DRAINAGE_Pin, GPIO_PIN_RESET); // 关闭继电器
        Drainage_Relay_state = OFF;
    }
}

//备用继电器操作函数
void Relay_Backup_Operate(RelayState_t state) {
    if (state == ON) {
        HAL_GPIO_WritePin(BACKUP_GPIO_Port,BACKUP_Pin, GPIO_PIN_SET); // 打开继电器
        Backup_Relay_state = ON;
    } else {
        HAL_GPIO_WritePin(BACKUP_GPIO_Port,BACKUP_Pin, GPIO_PIN_RESET); // 关闭继电器
        Backup_Relay_state = OFF;
    }
}

//控制任务（主函数）
void Control_Task(void const *argument) {
    // 初始化代码(只运行一次)写在while外面

    while (1) {
        // 任务代码(要循环的)
        HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13);
        osDelay(1000);
        // 任务延时，让其他任务运行
        osDelay(10);
    }
}
